<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>volatility.plugins.overlays.windows.win2003._MM_AVL_TABLE.traverse : API documentation</title>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
    <link href="apidocs.css" type="text/css" rel="stylesheet" />
    
    
  </head>
  <body>
    <h1 class="method">v.p.o.w.w._.traverse(self) : method documentation</h1>
    <p>
      <span id="part">Part of <a href="volatility.html">volatility</a>.<a href="volatility.plugins.html">plugins</a>.<a href="volatility.plugins.overlays.html">overlays</a>.<a href="volatility.plugins.overlays.windows.html">windows</a>.<a href="volatility.plugins.overlays.windows.win2003.html">win2003</a>.<a href="volatility.plugins.overlays.windows.win2003._MM_AVL_TABLE.html">_MM_AVL_TABLE</a></span>
      
      
    </p>
    <div>
      
    </div>
    <div>This is a hack to get around the fact that _MM_AVL_TABLE.BalancedRoot (an _MMADDRESS_NODE) doesn't
work the same way as the other _MMADDRESS_NODEs. In particular, we want _MMADDRESS_NODE to behave
like _MMVAD, and all other _MMADDRESS_NODEs have a Vad, VadS, Vadl tag etc, but _MM_AVL_TABLE.BalancedRoot
does not. So we can't reference self.BalancedRoot.RightChild here because self.BalancedRoot will be None
due to the fact that there is not a valid VAD tag at self.BalancedRoot.obj_offset - 4 (as _MMVAD expects).</p>
<p>We want to start traversing from self.BalancedRoot.RightChild. The self.BalancedRoot.LeftChild member
will always be 0. However, we can't call get_obj_offset(&quot;_MMADDRESS_NODE&quot;, &quot;RightChild&quot;) or it will
result in a TypeError: __new__() takes exactly 5 non-keyword arguments (4 given). Therefore, we hard-code
the offset to the RightChild and treat it as a pointer to the first real _MMADDRESS_NODE.</p>
<p>Update: hard-coding the offset to RightChild breaks x64 (since the offset is 8 on x86 and 16 on x64).
Thus to fix the vad plugins for x64 we assume that the offset of RightChild in _MMVAD_SHORT is the
same as the offset of RightChild in _MMADDRESS_NODE. We can call get_obj_offset on _MMVAD_SHORT since
it isn't in the _MMVAD factory like _MMADDRESS_NODE; and we won't get the above TypeError.<table class="fieldTable"></table></div>

    
    
    <div id="splitTables">
      
      
      
    </div>
    
    
    

    
    <address>
      <a href="index.html">API Documentation</a> for Volatility 2.2, generated by <a href="http://codespeak.net/~mwh/pydoctor/">pydoctor</a> at 2013-06-24 15:16:10.
    </address>
  </body>
</html>